1
CUDAカーネル開発の基礎
AI021Lesson 2
00:00

CUDAカーネル開発は、 カーネルという特殊なC++関数の定義から始まります。この関数は、 NVIDIA GPU膨大なコア数を持つGPU上で並列実行されるように設計されています。これらの関数は、CUDAプログラミングモデルにおける基本的な作業単位であり、シリアライズされたホストロジックがマッスィブに並列なデバイス実行へと移行する橋渡しの役割を果たします。

1. __global__ 指定子

この __global__ 宣言指定子は、コンパイラにGPU用コードを生成させつつ、関数のエントリポイントをCPUからも参照可能にするために必須のAPI修飾子です。 GPUで実行され、ホストから呼び出せる関数はすべてカーネルと呼ばれます。

2. 実行環境

カーネルは ストリーミングマルチプロセッサ(SM)に配信・実行されます。SMは、数百もの同時実行スレッドを管理する、NVIDIA GPU内の主要な計算エンジンです。各SMはスレッドブロックを処理し、それらを処理コアにスケジューリングします。

構文ルール: カーネルは厳密に voidを返す必要があります。ホストとは非同期で動作するため、直接的にCPUに値を返すことはできません。結果は割り当てられたデバイスメモリに書き戻す必要があります。

ホスト(CPU)デバイス(NVIDIA GPU)ストリーミングマルチプロセッサ(SM)カーネル起動
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>